package com.wing.sell.model.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.enums.IEnum;
import com.wing.mybatis.common.BaseEntity;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 销售代理商经销记录
 *
 * @author
 */
@Data
@NoArgsConstructor
@Accessors(chain = true)
@TableName("sel_agent")
public class Agent extends BaseEntity<Agent> implements Serializable {

    private static final long serialVersionUID = 1L;

    public enum SourceId implements IEnum<Integer> {

        /**
        * 后台录入
        */
        admin(0,"后台录入"),
        /**
        * 平台申请
        */
        platform(1,"平台申请"),
        /**
        * 官网申请
        */
        guanwang(2,"官网申请");

        private int code;
        private String desc;

        SourceId(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    public enum Type implements IEnum<Integer> {

        /**
        * 签约渠道
        */
        on(0,"签约渠道"),
        /**
        * 意向渠道
        */
        having(1,"意向渠道");

        private int code;
        private String desc;

        Type(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    public enum Status implements IEnum<Integer> {

        /**
         * 待尽调
         */
        wait_due(0,"待尽调"),
        /**
         * 待审核
         */
        wait_check(1,"待审核"),
        /**
         * 待签约
         */
        wait_qianyue(2,"待签约"),
        /**
         * 已签约
         */
        complet(3,"已签约");

        private int code;
        private String desc;

        Status(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    public enum Validity implements IEnum<Integer> {

        /**
         * 有效
         */
        enable(0,"有效"),
        /**
         * 无效
         */
        disable(1,"无效");

        private int code;
        private String desc;

        Validity(int code,String desc){
            this.code=code;
            this.desc=desc;
        }

        @Override
        public Integer getValue(){
            return this.code;
        }

        public String getDesc(){
            return this.desc;
        }
    }

    /**
     * 创建者
     */
    private Long creator;

    /**
     * 修改者
     */
    private Long modifier;

    /**
     * 创建人
     */
    private String creatorName;

    /**
     * 修改人
     */
    private String modifierName;

    /**
     * 代理商名称
     */
    private String name;

    /**
     * 营业执照号
     */
    private String licenseNo;

    /**
     * 营业执照照片
     */
    private String licensePhoto;

    /**
     * 代理商所属级别
     */
    private Long agtLevel;

    /**
     * 省id
     */
    private Long provinceId;

    /**
     * 市id
     */
    private Long cityId;

    /**
     * 区县ID
     */
    private Long areaId;

    /**
     * 详细地址
     */
    private String addr;

    /**
     * 收款银行名
     */
    private String bankName;

    /**
     * 收款银行户名
     */
    private String bankAccount;

    /**
     * 收款银行号码
     */
    private String bankCard;

    /**
     * 开户许可证
     */
    private String openingPermit;

    /**
     * 代理商来源
     */
    private SourceId sourceId;

    /**
    * 代理商来源描述
    */
    @TableField(exist = false)
    private String sourceIdDesc;

    public String getSourceIdDesc() {
        return sourceId == null ? null : sourceId.getDesc();
    }

    /**
     * 代理商类型
     */
    private Type type;

    /**
    * 代理商类型描述
    */
    @TableField(exist = false)
    private String typeDesc;

    public String getTypeDesc() {
        return type == null ? null : type.getDesc();
    }

    /**
     * 对接人
     */
    private String counterpart;

    /**
     * 代理商分类
     */
    private Long agentCategoryId;

    /**
     * 代理商状态
     */
    private Status status;

    /**
    * 代理商状态描述
    */
    @TableField(exist = false)
    private String statusDesc;

    public String getStatusDesc() {
        return status == null ? null : status.getDesc();
    }

    /**
     * 代理商有效性
     */
    private Validity validity;

    /**
     * 代理商有效性描述
     */
    @TableField(exist = false)
    private String validityDesc;

    public String getValidityDesc() {
        return validity == null ? null : validity.getDesc();
    }

    /**
     * 代理商分类名称
     */
    @TableField(exist = false)
    private String agentCategoryName;

    /**
     * 代理商所属级别名称
     */
    @TableField(exist = false)
    private String agtLevelName;

    /**
     * 省份名称
     */
    @TableField(exist = false)
    private String provinceName;

}
